package cn.wolfcode.manage.service.impl;

import java.util.Date;
import java.util.List;

import cn.wolfcode.common.utils.DateUtils;
import cn.wolfcode.manage.util.DateUtil;
import io.jsonwebtoken.lang.Assert;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import cn.wolfcode.manage.mapper.SalaryMapper;
import cn.wolfcode.manage.domain.Salary;
import cn.wolfcode.manage.service.ISalaryService;

/**
 * 薪资管理Service业务层处理
 *
 * @author wj
 * @date 2025-01-18
 */
@Service
public class SalaryServiceImpl implements ISalaryService {
  @Autowired
  private SalaryMapper salaryMapper;

  /**
   * 查询薪资管理
   *
   * @param id 薪资管理主键
   * @return 薪资管理
   */
  @Override
  public Salary selectSalaryById(Long id) {
    return salaryMapper.selectSalaryById(id);
  }

  /**
   * 查询薪资管理列表
   *
   * @param salary 薪资管理
   * @return 薪资管理
   */
  @Override
  public List<Salary> selectSalaryList(Salary salary) {
    return salaryMapper.selectSalaryList(salary);
  }

  /**
   * 新增薪资管理
   *
   * @param salary 薪资管理
   * @return 结果
   */
  @Override
  public int insertSalary(Salary salary) {
    Assert.notNull(salary,"参数不能为 null");
    //验证薪资合理性
    //时期合理性 -- 发放日期要早于now
    Date now = DateUtils.getNowDate();//获取现在的时间
    if(salary.getReleaseTime().after(now)){
      throw new RuntimeException("发放时间不合理");
    }
    return salaryMapper.insertSalary(salary);
  }

  /**
   * 修改薪资管理
   *
   * @param salary 薪资管理
   * @return 结果
   */
  @Override
  public int updateSalary(Salary salary) {
    Assert.notNull(salary,"参数不能为null");
    //时期合理性 -- 发放日期要早于now
    Date now = DateUtils.getNowDate();//获取现在的时间
    if(salary.getReleaseTime().after(now)){
      throw new RuntimeException("发放时间不合理");
    }
    return salaryMapper.updateSalary(salary);
  }

  /**
   * 批量删除薪资管理
   *
   * @param ids 需要删除的薪资管理主键
   * @return 结果
   */
  @Override
  public int deleteSalaryByIds(Long[] ids) {
    return salaryMapper.deleteSalaryByIds(ids);
  }

  /**
   * 删除薪资管理信息
   *
   * @param id 薪资管理主键
   * @return 结果
   */
  @Override
  public int deleteSalaryById(Long id) {
    return salaryMapper.deleteSalaryById(id);
  }
}
